package business.aluguel;

import java.util.HashSet;
import java.util.Set;
import business.sistema.ObjetoSistema;

public class Veiculo extends ObjetoSistema
{
	private static final long serialVersionUID = 8397564437239684316L;
	private int codigo;
	private String anoFabricacao;
	private boolean segurado;
	private int portas;
	private double quilometragem;
	private double valorAluguel;
	private double valorVenda;
	private String placa;
	private Modelo modelo;
	private Set<AcessoriosVeiculos> acessoriosVeiculo;
	
	public int getCodigo()
	{
		return codigo;
	}
	
	public void setCodigo(int codigo)
	{
		this.codigo = codigo;
	}
	
	public String getAnoFabricacao()
	{
		return anoFabricacao;
	}
	
	public void setAnoFabricacao(String anoFabricacao)
	{
		this.anoFabricacao = anoFabricacao;
	}
	
	public boolean isSegurado()
	{
		return segurado;
	}
	
	public void setSegurado(boolean segurado)
	{
		this.segurado = segurado;
	}
	
	public int getPortas()
	{
		return portas;
	}
	
	public void setPortas(int portas)
	{
		this.portas = portas;
	}
	
	public double getQuilometragem()
	{
		return quilometragem;
	}
	
	public void setQuilometragem(double quilometragem)
	{
		this.quilometragem = quilometragem;
	}

	public double getValorAluguel()
	{
		return valorAluguel;
	}

	public void setValorAluguel(double valorAluguel)
	{
		this.valorAluguel = valorAluguel;
	}

	public double getValorVenda()
	{
		return valorVenda;
	}

	public void setValorVenda(double valorVenda)
	{
		this.valorVenda = valorVenda;
	}

	public void setPlaca(String placa)
	{
		this.placa = placa;
	}

	public String getPlaca()
	{
		return placa;
	}

	public void setModelo(Modelo modelo)
	{
		this.modelo = modelo;
	}

	public Modelo getModelo()
	{
		return modelo;
	}
	
	public String getNome()
	{
		return getModelo().getNome();
	}

	public void setAcessoriosVeiculo(Set<AcessoriosVeiculos> acessorios)
	{
		this.acessoriosVeiculo = acessorios;
	}

	public Set<AcessoriosVeiculos> getAcessoriosVeiculo()
	{
		return acessoriosVeiculo;
	}
	
	public void addAcessorio(Acessorio acessorio)
	{
		boolean jaCadastrado = false;
		
		if(acessoriosVeiculo == null)
		{
			acessoriosVeiculo = new HashSet<AcessoriosVeiculos>();
		}
		
		for(AcessoriosVeiculos acessorioCadastrado : acessoriosVeiculo)
		{
			if(acessorio.getNome().equals(acessorioCadastrado.getNomeAcessorio()))
			{
				jaCadastrado = true;
				break;
			}
		}
		
		if(!jaCadastrado)
		{			
			AcessoriosVeiculos novoAcessorioVeiculo = new AcessoriosVeiculos();
			
			novoAcessorioVeiculo.setAcessorio(acessorio);
			novoAcessorioVeiculo.setVeiculo(this);
			
			acessoriosVeiculo.add(novoAcessorioVeiculo);
		}
	}
	
	public void removeAcessorio(Acessorio acessorio)
	{
		AcessoriosVeiculos acessorioRemover = null;
		
		if(acessoriosVeiculo == null)
		{
			acessoriosVeiculo = new HashSet<AcessoriosVeiculos>();
		}
		
		for(AcessoriosVeiculos acessorioCadastrado : acessoriosVeiculo)
		{
			if(acessorio.getNome().equals(acessorioCadastrado.getNomeAcessorio()))
			{
				acessorioRemover = acessorioCadastrado;
				break;
			}
		}
		
		if(acessorioRemover != null)
		{			
			acessoriosVeiculo.remove(acessorioRemover);
		}
	}
}
